package com.example.bookreader1130_1203;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.Scroller;
import android.widget.TextView;

import com.example.bookreader1130_1203.Utils.ProcessText;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class ReadActivity extends AppCompatActivity {
    private ScrollView scroll ;
    private TextView  readtxt ,pagetxt ;
    Button getPre,getNext ;
    String bookname="";
    String filepath="/sdcard/Download/" ;//指定文件位置  方法二
    ProcessText processText ;  //定义全局变量

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_read);
        initView();
        setListener();
    }


    private  void getPage(){ /*显示页码*/

        pagetxt.setText("第"+ processText.currentpage+"页/共"+processText.pages+"页");
        scroll.scrollTo(0,0);  //翻页跳转到页首
    }
    private void setListener() {

        View.OnClickListener listener=new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String content ="" ;
                switch (v.getId()){
                    case R.id.getPre :
                        content =processText.getPre() ;
                        readtxt.setText(content);
                        getPage();
                        break;
                    case  R.id.getNext:
                        content=processText.getNext() ;
                        readtxt.setText(content);
                        getPage();
                        break;
                }
            }

        };
        getPre.setOnClickListener(listener);
        getNext.setOnClickListener(listener);

    }
    private void initView() {

        scroll=findViewById(R.id.scroll);
        readtxt=findViewById(R.id.readtxt) ;
        pagetxt=findViewById(R.id.pagetxt) ;
        getPre=findViewById(R.id.getPre) ;
        getNext=findViewById(R.id.getNext) ;

        /*读取   */
        Intent it =getIntent() ;
        bookname=it.getStringExtra("bookname") ;
        String content =readAssetsTxt();

        File file =writeTxtToFile(content,filepath,bookname);

        processText =new ProcessText(file,0);
        /*file 读取，并且指定它为零 */
        content =processText.getNext(); /*第零页的下一页*/

        readtxt.setText(content);
        getPage();

    }

    private File writeTxtToFile(String content, String filepath, String bookname) {
        File file =new File(filepath+bookname) ;
        try {
            FileOutputStream fos =new FileOutputStream(file,false); //append 追加 false：不追加
            //文件输  是一个通道 出流会创建 不存在的文件 ，false 是不追加 ，也就是覆写
            //1.内容编码转化成编码
            fos.write(content.getBytes());
            fos.close(); //要记得关闭
            return  file ;/*  返回出来*/

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  null ;  /*万一 内容进不去 ，return 一下 */
    }


    //打开一个文件是出入流，写入一个文件是输出流
    private String readAssetsTxt() {
        //把文件 直接打开成输入流
        try {
            /*点击书籍跳转 阅读*/
            //方法1    打开项目里的文件
            InputStream is=getAssets().open(bookname+".txt");
            //写入到

            //方法2  打开 电脑内部-目录里的文件
//            File file =new File(filepath+bookname +".txt");
//            FileInputStream is =new FileInputStream(file) ;


            int size =is.available() ; //  36 字节
            byte[] buffer=new byte[size] ;  // 读的是编码 ，输出是内容
            is.read(buffer);  //有个整个文件的
            is.close();//关闭，避免占用内存
            String text =new String( buffer,"utf-8");
            //转换成utf-8
            return  text;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return  null ;
    }
}
